/** MainMenu-Klasse fuer die TGUIMain
 *
 *  @brief MainMenu-Klasse fuer TGUIMain
 *
 *  @author Nico Mutter
 *  @date 19.05.2012
 *
 *  @version 0.1
 *  Doxygen Kommentare hinzugefuegt
 */

#ifndef MainMenuH
#define MainMenuH

#include <vcl.h>
#include "StringReferenzen.h"
#include "TGUIMain.h"

class MainMenu : public TMainMenu{

private:
		//* Datei Menue
		TMenuItem* datei;
		TMenuItem* neueSchaltung;
		TMenuItem* beenden;

		//* Bearbeiten Menue
		TMenuItem* bearbeiten;
		TMenuItem* loeschen;

		//* Simulation Menue
		TMenuItem* simulation;
		TMenuItem* starten;
		TMenuItem* stoppen;

		/** Toggelt die beiden MenuItems MainMenu::starten und MainMenu::stoppen
		* \n so dass immer nur eines von beiden enabled ist
		* @param[in] state Bei true, wird davon ausgegangen das simuliert wird
		* daher wird MainMenu::starten disabled und MainMenu::stoppen enabled. \n
		* Bei false andersrum.
		*/
		void __fastcall setSimulieren(bool state);

public:

	/** Konsturktor von MainMenu.
	* \n Erstellt das MainMenu fuer den owner.
	*
	* @param[in] owner Gibt den Besitzer/Parent des Gatters an
	*/
	__fastcall MainMenu(TComponent* owner);

	/** Destruktor von MainMenu
	* \n Loescht alle angelegten Menu Items.
	*/
	__fastcall ~MainMenu();

	//* Callback-Methoden

	/** Callback-Funktion fuer MainMenu::neueSchaltung
	* \n Wird bei einem Klick auf MainMenu::neueSchaltung aufgerufen.
	*
	* @param[in] sender Komponente die den Event ausgeloest hat
	*/
	void __fastcall neueSchaltungClick(TObject* sender);

	/** Callback-Funktion fuer MainMenu::beenden
	* \n Wird bei einem Klick auf MainMenu::beenden aufgerufen.
	*
	* @param[in] sender Komponente die den Event ausgeloest hat
	*/
	void __fastcall beendenClick(TObject* sender);

	/** Callback-Funktion fuer MainMenu::loeschen
	* \n Wird bei einem Klick auf MainMenu::loeschen aufgerufen.
	*
	* @param[in] sender Komponente die den Event ausgeloest hat
	*/
	void __fastcall loeschenClick(TObject* sender);

	/** Callback-Funktion fuer MainMenu::starten
	* \n Wird bei einem Klick auf MainMenu::starten aufgerufen.
	*
	* @param[in] sender Komponente die den Event ausgeloest hat
	*/
	void __fastcall startenClick(TObject* sender);

	/** Callback-Funktion fuer MainMenu::stoppen
	* \n Wird bei einem Klick auf MainMenu::stoppen aufgerufen.
	*
	* @param[in] sender Komponente die den Event ausgeloest hat
	*/
	void __fastcall stoppenClick(TObject* sender);

	/** Setzt MainMenu::loeschen Enabled auf den uebergebenen Status
	* @param[in] state Zustand auf den das Attribug Enabled von MainMenu::loeschen
	* gesetzt werden soll.
	*/
	void __fastcall setLoeschen(bool state);
};


#endif
